/* 
 * author:   可乐加糖
 * email:    black.angel.liu@gmail.com
 * des:      可乐加糖常用工具库
 */
 var client = function(){
	var engine = {
		ie:0,
		gecko:0,
		webkit:0,
		khtml:0,
		opera:0,
		//具体的版本
		ver:null
	};
	var browser = {
		ie:0,
		firefox:0,
		konq:0,
		opera:0,
		chrome:0,
		safari:0,
		ver:null
	};
	var system = {
		win:false,
		mac:false,
		x11:false,
		//移动设备
		iphone:false,
		ipod:false,
		nokiaN:false,
		winMobile:false,
		macMobile:false,
		//游戏设备
		wii:false,
		ps:false
	};
	//浏览器对象和平台检测
	var ua = window.navigator.userAgent;
	//首先检测 Opear
	if(window.opera){
		engine.ver = browser.ver = window.opera.version();
		engine.opera = browser.opera = parseFloat(engine.ver);
	}
	//其次检测 Webkit 浏览器，基于版本过多的原因。
	else if(/AppleWebKit\/(\S+)/.test(ua)){
		engine.ver = RegExp["$1"];
		engine.webkit = parseFloat(engine.ver);
		//确定是 Chrome
		if(/Chrome\/(\S+)/.test(ua)){
			browser.ver = RegExp["$1"];
			browser.chrome = parseFloat(browser.ver);
		}
		//确定是 Safari 浏览器
		else if(/Version\/(\S+)/.test(ua)){
			browser.ver = RegExp["$1"];
			browser.safari = parseFloat(browser.ver);
		}else{
			//进似的确定版本号
			var safariVersion = 1;
			if(engine.webkit < 100){
				safariVersion = 1;
			}else if(engine.webkit < 312){
				safariVersion = 1.2;
			}else if(engine.webkit < 412){
				safariVersion = 1.3;
			}else{
				safariVersion = 2;
			}
			browser.safari = browser.ver = safariVersion;
		}
	}
	//检测 KHTML
	else if(/KHTML\/(\S+)/.test(ua)||/Konqueror\/([^;]+)/.test(ua)){
	engine.ver = browser.ver = RegExp["$1"];
	engine.khtml = browser.konq = parseFloat(engine.ver);
	}
	//检测 Gecko
	else if(/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){
		engine.ver = RegExp["$1"];
		engine.gecko = parseFloat(engine.ver);
		//确定是否 FIREFOX
		if(/Firefox\/(\S+)/.test(ua)){
			browser.ver = RegExp["$1"];
			browser.firefox = parseFloat(browser.ver);
		}
	}
	//最后一个检测 IE
	else if(/MSIE ([^;)]+)/.test(ua)){
		engine.ver = browser.ver = RegExp["$1"];
		engine.ie = browser.ie = parseFloat(engine.ver);
	} 		

	var p = window.navigator.platform;
	system.win = p.indexOf("Win") == 0;
	system.mac = p.indexOf("Mac") == 0;
	system.x11 = (p.indexOf("X11") == 0 || p.indexOf("Linux") == 0);
	// Windows 版本
	if(system.win){
		if(/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){
			if(RegExp["$1"]=="NT"){
				switch(RegExp["$2"]){
					case "5.0":
					system.win = "2000";
					break;
					case "5.1":
					system.win = "XP";
					break;
					case "6.0":
					system.win = "Vista";
					break;
					case "6.1":
					system.win = "Win 7";
					break;
					default:
					system.win = "NT";
					break;
				}
			}
			else if(RegExp["$1"] == "9x"){
				system.win = "ME";
			}else{
				system.win = RegExp["$1"];
			}
		}
	};
	//检测是否移动平台
	system.iphone = ua.indexOf("iPhone") > -1;
	system.ipod = ua.indexOf("iPod") > -1;
	system.macMobile = (system.iphone || system.ipod);
	system.nokiaN = ua.indexOf("NokiaN") > -1;
	system.winMobile = (system.win == "CE");
	//检测游戏设备
	system.wii = ua.indexOf("Wii") > -1;
	system.ps = /playstation/i.test(ua);

	//返回检测对象
	return {
		engine:engine,
		browser:browser,
		system:system
	}
 }();
 

 (function(){
 	var coke = {};
	coke.version = "1.0";
    coke.loadScript = function (fileList, callBack) {
	   var count = 0, i = 0, len = fileList.length, scriptObj,
	        d = document,
	        headObj = d.documentElement.firstChild,
	        done = function (idx) {
	            if (++count == len && callBack) {
	                callBack();
	            }
	        };
	    while (i < len) {
	        file = fileList[i];
	        if (!file) {
	            done(i);
	            i++;
	            continue;
	        }
	        scriptObj = d.createElement("script");
	        scriptObj.type = "text/javascript";
	        scriptObj.async = true;
	        if (scriptObj.readyState) {
	            scriptObj.onreadystatechange = function (idx) {
	                return function () {
	                    var state = this.readyState;
	                    if (state == "loaded" || state == "complete" || state == "completed") {
	                        this.onreadystatechange = null;
	                        done(idx);
	                    }
	                };
	            }(i);
	        } else {
	            scriptObj.onload = function (idx) {
	                return function () {
	                    done(idx);
	                };
	            }(i);
	        }
	        scriptObj.src = file;
	        headObj.appendChild(scriptObj);
	        i++;
	    }
	}
	//把对象定义赋值给WINDOW对象
	window.coke = coke;
 })();
